NodeBox

Create visual output with Python programming code
Home Download Reference Tutorial Library Gallery About

Gravital | natural language bindings

A first set of statements are those that have a direct visual representation, involving structural units like line, shape, color, motion, texture, pattern, direction, orientation, scale, angle, space and proportion.

 


Individual object definition:

Statements that define the outlook of elementary shapes (rectangles, circles, text or an image).



Individual absolute transformations of objects:

Statements that define an object's absolute position. "Absolute" here means in relation to the implicit canvas/page/window: the title is at the top. See also the transformation commands in the NodeBox reference.



Relative proportional transformations of objects:

Statements that define how an object is arranged in explicit relation to another object on the canvas: the company image is below the title.



Relative definition of object properties:

Object properties like color and font are based on other objects on the canvas: the company image has the same shade of blue as the title but slightly smaller.



Indefinite objects:

These are individual objects that are not a rectangle, oval, image, line or text. Stuff like: a sharp, curved shape, a rough and pointy shape, something resembling an amoeba.

Gravital users should be able to expand the database of objects by building new shapes and tagging them (flower, spikes, rabbit, ...) - a node network is a crucial part of Gravital.

 


Mass objects:

Some named objects can be groups of objects, or a "mass object": everything, all of the blue circles, all text to the left, all ovals in the flower shape, all titles. An image can be made up of layers (i.e. PhotoShop): the bottom layer in the image is slightly blurred, the next layer in the image is "flower.jpg". In this case the image is a "canvas" to the layers inside it.

 


Composition of objects:

These are statements which we cannot map directly to short programming commands. They involve the layout of a group of object or the entire canvas. For this we will need to write code that visualises composition units like chaos, dynamical, explode, grow, focus, hairy.

Some possibilities on how to discern between composition units:


See also http://research.nodebox.net/Tom_Van_Iersel

An extensive library of tagged composition algorithms / nodes (grid, sine, grow, bloom, explode, wave, columns, recurse, ...) is essential in Gravital.



A second set of statements are those that work on the conceptual level. These we need to parse for keywords that are mapped to a series of composition units, image finders and indefinite-object-generators.

 




Gravital users should be able to see the decision-making process. A graphing algorithm and commonsense networks are crucial.